using Drill.Extensibility;

namespace Drill.Configuration
{
	/// <summary>
	/// Represents configuration data for a dependency resolver.
	/// </summary>
	public class DependencyResolverConfiguration : object, IDependencyResolverConfiguration
	{
		/// <summary>
		/// Gets or sets the DrillBit configuration collection.
		/// </summary>
		/// <value>
		/// The DrillBit configuration collection.
		/// </value>
		public IDrillBitConfigurationCollection DrillBits { get; set; }

		/// <summary>
		/// Gets or sets a value indicating whether this <see cref="IDependencyResolverConfiguration"/> is enabled.
		/// </summary>
		/// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
		public bool Enabled { get; set; }

		/// <summary>
		/// Gets or sets the name of the dependency resolver.
		/// </summary>
		/// <value>The name of the dependency resolver.</value>
		public string Name { get; set; }

		public IRootPathProviderConfigurationCollection RootPathProviders { get; set; }

		public ISearchPathConfigurationCollection SearchPaths { get; set; }

		/// <summary>
		/// Gets or sets the assembly-qualified type name of the concrete type that is configured as a dependency resolver.
		/// The type must implement either <see cref="IDrillBit"/> or <see cref="IDependencyResolver"/>.
		/// </summary>
		/// <value>The assembly-qualified type name of the concrete type that is configured as a dependency resolver.</value>
		public string Type { get; set; }
	}
}